package com.yyy.tcc.service;

import com.yyy.tcc.dao.AccountDao;
import java.math.BigDecimal;

/**
 * TCC转账服务接口
 */
public interface TransferService {
    /**
     * 执行转账操作
     * @param transactionId 事务ID
     * @param fromUserId 转出用户ID
     * @param toUserId 转入用户ID
     * @param amount 转账金额
     * @return 是否成功
     */
    boolean transfer(String transactionId, String fromUserId, String toUserId, BigDecimal amount);

    /**
     * 尝试预留资源
     */
    boolean try_(String transactionId, String fromUserId, String toUserId, BigDecimal amount);

    /**
     * 确认执行
     */
    boolean confirm(String transactionId);

    /**
     * 取消执行
     */
    boolean cancel(String transactionId);

    /**
     * 获取账户DAO
     * @return AccountDao实例
     */
    AccountDao getAccountDao();
}
